﻿using Stack.Entities;
namespace Cache.Interfaces
{
    /// <summary>
    /// Cache's Interface 
    /// </summary>
    public interface ICacheProvider
    {
        /// <summary>
        /// Pile to manage
        /// </summary>
        HpPile HpPile { get; set; }

        /// <summary>
        /// Save the pile's information in the cache
        /// </summary>
        void Store();

        /// <summary>
        /// Restore the cache's information to the pile 
        /// </summary>
        HpPile Restore();

        /// <summary>
        /// Specify if the cache contains data
        /// </summary>
        bool CointainsData { get; set; }

        /// <summary>
        /// Key to specify the "name" of the cache
        /// </summary>
        string Key { get; set; }

        /// <summary>
        /// Force to delete the cache
        /// </summary>
        void Flush();
    }
}
